home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
-
-
- struct {
- char for_dos[21];
- char attr;
- struct {
- unsigned hour : 5;
- unsigned minute : 6;
- unsigned secs : 5;
- } time;
- struct {
- unsigned year : 7;
- unsigned month : 4;
- unsigned day : 5;
- } date;
- long size;
- char name[13];
- char fill[85];
- } buf;
-
-
- main()
- {
- int error;
- int attr;
- char label[13];
- char fname[9];
- char fext[4];
- char fnout[81];
- char *ptr;
- char ch;
- char *strpbrk();
-
- FILE *fpout;
-
- printf("\n\nEnter output filename: ");
- input(fnout,"",50,12,'_',0,0,0);
-
- if(exist(fnout))
- printf("\n\nOutput file %s exists. Directory info will be appended.\n\n",fnout);
- else
- printf("\n\nCreating %s.\n\n",fnout);
-
- fpout=fopen(fnout,"aa");
- if(!fpout) {
- printf("\n\nOutput file open error...\n\n");
- exit(1);
- }
-
- while(1) {
- kbclear();
- ch=waitkey(0,0,"\nEnter diskette to catalog in drive A:, press any key, ESC to quit...\n\n");
- if(ch==27)
- break;
- error=findfirst("a:*.*",&buf,0x08);
- if(error==2 || error==18) {
- printf("\nDiskette in drive A: does not have a volume label.\n\n");
- printf("A volume label must be added before processing this diskette. Use a utility\n");
- printf("such as CV to add the label...\n\n");
- continue;
- }
- strcpy(label,buf.name);
- printf("label: %s\n",label);
- error=findfirst("a:*.*",&buf,0x07);
- if(error==2 || error==18)
- continue;
- ptr=strpbrk(buf.name,".");
- if(ptr) {
- *ptr='\0';
- strcpy(fext,ptr+1);
- } else strcpy(fext,"");
- strcpy(fname,buf.name);
- fprintf(fpout,"\"%-8s\",\"%-3s\",\"%7ld\",\"%02u:%02u:%02u\",\"%02u/%02u/%04u\",\"%s\"\n",
- fname,fext,buf.size,buf.time.hour,buf.time.minute,buf.time.secs,
- buf.date.month,buf.date.day,buf.date.year+1980,label);
- printf("%-8s.%-3s %7ld %02u:%02u:%02u %02u/%02u/%04u\n",
- fname,fext,buf.size,buf.time.hour,buf.time.minute,buf.time.secs,
- buf.date.month,buf.date.day,buf.date.year+1980);
- while(1) {
- error=findnext("a:*.*",&buf,0x07);
- if(error==2 || error==18)
- break;
- ptr=strpbrk(buf.name,".");
- if(ptr) {
- *ptr='\0';
- strcpy(fext,ptr+1);
- } else strcpy(fext,"");
- strcpy(fname,buf.name);
- fprintf(fpout,"\"%-8s\",\"%-3s\",\"%7ld\",\"%02u:%02u:%02u\",\"%02u/%02u/%04u\",\"%s\"\n",
- fname,fext,buf.size,buf.time.hour,buf.time.minute,buf.time.secs,
- buf.date.month,buf.date.day,buf.date.year+1980,label);
- printf("%-8s.%-3s %7ld %02u:%02u:%02u %02u/%02u/%04u\n",
- fname,fext,buf.size,buf.time.hour,buf.time.minute,buf.time.secs,
- buf.date.month,buf.date.day,buf.date.year+1980);
- }
- }
- fclose(fpout);
- }
-